package com.qfedu.cardlikelazy.response;

public class Response<T> {
    // 表示响应状态是否成功 code:0成功 code:-1 失败
    private Integer code;
    // 提示信息
    private String msg;
    // 返回的数据对象
    private T data;

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    public T getData() {
        return data;
    }

    // 统一使用构造方法创建对象
    private Response(Integer code, String msg, T data) {
        this.code = code;
        this.msg = msg;
        this.data = data;
    }

    // 响应成功的完整方法，需要调用者提供响应的code,msg,data
    public static <T> Response<T> success(Integer code, String msg, T data) {
        return new Response<>(code, msg, data);
    }

    // 简化版本的成功方法,需要设置响应的数据
    public static <T> Response<T> success(T data) {
        return success(0, "成功", data);
    }

    // 简化版本的成功方法，需要设置参数
    public static <T> Response<T> success() {
        return success(null);
    }

    // 响应失败的完整方法，需要调用者提供响应的code,msg,data
    public static <T> Response<T> fail(Integer code, String msg, T data) {
        return new Response<>(code, msg, data);
    }

    // 简化版本的失败方法,需要设置响应的数据
    public static <T> Response<T> fail(T data) {
        return fail(-1, "失败", data);
    }

    // 简化版本的失败方法，需要设置参数
    public static <T> Response<T> fail() {
        return fail(null);
    }
}
